package com.nulldev.util.web.YouTubeExtractor.search;

import static com.nulldev.util.manage.Macros.__assert;
import static com.nulldev.util.web.YouTubeExtractor.YouTubeExtractorConstants.CLIENT_VERSION;
import static com.nulldev.util.web.YouTubeExtractor.YouTubeExtractorConstants.PAGE_CL;
import static com.nulldev.util.web.YouTubeExtractor.YouTubeExtractorConstants.PAGE_LABEL;
import static com.nulldev.util.web.YouTubeExtractor.YouTubeExtractorConstants.PAGE_STS;
import static com.nulldev.util.web.YouTubeExtractor.YouTubeExtractorConstants.UTC_OFFSET;
import static com.nulldev.util.web.YouTubeExtractor.YouTubeExtractorConstants.VARIANTS_CHECKSUM;
import static com.nulldev.util.web.YouTubeExtractor.YouTubeExtractorConstants.XSRF_TOKEN;

import java.time.Duration;
import java.util.List;
import java.util.regex.Pattern;

import com.nulldev.util.VariableAPI.ArrayUtils;
import com.nulldev.util.VariableAPI.MathUtil;
import com.nulldev.util.VariableAPI.StringsUtil;
import com.nulldev.util.data.Arrays.arrays.FastLists;
import com.nulldev.util.languages.json.uniapi.UniJsonValue;
import com.nulldev.util.logging.Logger;
import com.nulldev.util.logging.LoggerFactory;
import com.nulldev.util.web.HttpClient.HttpClient;
import com.nulldev.util.web.HttpClient.HttpMethod;
import com.nulldev.util.web.HttpClient.HttpResponse;
import com.nulldev.util.web.URLUtils.Entry;
import com.nulldev.util.web.URLUtils.URLUtils;
import com.nulldev.util.web.YouTubeExtractor.YouTubeExtractor;
import com.nulldev.util.web.YouTubeExtractor.YouTubeExtractorConstants;
import com.nulldev.util.web.YouTubeExtractor.search.YouTubeSearch.YouTubeSearchResult.ResultType;

public class YouTubeSearch {

	private static final String SEARCH_URL = "https://www.youtube.com/results?search_query=[%SEARCH_QUERY%]&pbj=1";
	private static final String SQ = Pattern.quote("[%SEARCH_QUERY%]");
	private static final Logger log = LoggerFactory.getLoggerD(true);

	public static YouTubeSearchQuery searchFor(final String query) throws Exception {
		return searchFor(query, null);
	}

	public static YouTubeSearchQuery searchFor(final String query, final String continuation) throws Exception {
		return searchFor(query, continuation, true);
	}

	public static YouTubeSearchQuery searchFor(final String query, final String continuation, final boolean shouldEncode) throws Exception {
		return searchFor(query, continuation, shouldEncode, true);
	}

	public static YouTubeSearchQuery searchFor(final String query, final String continuation, final boolean shouldEncode, final boolean sendConsentCookie)
			throws Exception {
		if (query == null)
			throw new NullPointerException("query == null!");
		if (query.isEmpty())
			return new YouTubeSearchQuery(query, continuation);
		final String url = SEARCH_URL.replaceAll(SQ, (shouldEncode ? URLUtils.safeEncode(query) : query));
//		String x = ;
		UniJsonValue ro = null;
		if (continuation != null && !continuation.isEmpty() && !continuation.equalsIgnoreCase("null")) {
			log.debug("Using continuation!");
//			x += "&continuation=" + continuation + "&ctoken=" + continuation;
//			log.debug("NEW_URL: " + x);
			log.debug("cont: " + continuation);
			log.debug("XSRF_TOKEN: " + XSRF_TOKEN);
			ro = UniJsonValue.object();
			ro.add("continuation", continuation);
			final UniJsonValue context = UniJsonValue.object(3);
			final UniJsonValue client = UniJsonValue.object(7);
			client.add("platform", "DESKTOP");
			client.add("userAgent", URLUtils.STANDARD_USERAGENT);
			client.add("utcOffsetMinutes", 60);
			client.add("hl", "en-GB");
			client.add("clientName", "WEB");
			client.add("clientVersion", YouTubeExtractorConstants.CLIENT_VERSION);
			client.add("connectionType", "CONN_CELLULAR_4G");
			context.add("client", client);
			final UniJsonValue request = UniJsonValue.object(3);
			request.add("useSsl", true);
			request.add("internalExperimentFlags", UniJsonValue.emptyArray());
			request.add("consistencyTokenJars", UniJsonValue.emptyArray());
			context.add("request", request);
			final UniJsonValue user = UniJsonValue.object(1);
			user.add("lockedSafetyMode", false);
			context.add("user", user);
			ro.add("context", context);
//			log.info(ro);
		}
		final HttpResponse<String> r = (continuation == null || continuation.isEmpty() || continuation.equalsIgnoreCase("null")
				? HttpClient.getString().url(url).timeout(Duration.ofSeconds(15)).header(new Entry("Referrer", url)).header(new Entry("X-SPF-Previous", url))
						.header(new Entry("X-SPF-Referer", url)).headers(sendConsentCookie ? YouTubeExtractor.DEFAULT_COOKIES : YouTubeExtractor.BLANK_COOKIES)
						// .entry(new Entry("Cookie", "VISITOR_INFO1_LIVE=OGsdujEIYks;
						// CONSENT=WP.27d57b.27d686.27d7a8; PREF=f1=50000000&f5=30000; YSC=K6ZTRR-CFKc;
						// GPS=1;
						// ST-1t9uroa=oq=nislt&gs_l=youtube.1.0.0i71k1l10.0.0.1.197055.0.0.0.0.0.0.0.0..0.0....0...1ac..64.youtube..0.0.0....0.T6ee2SoW8xg&feature=web-masthead-search&itct=CCQQ7VAiEwjU25GloOrkAhWd_FUKHXi4CEg%3D&csn=XnaKXcafAdah8gOZny4"))
						.header("X-YouTube-Client-Name", "1").header("X-YouTube-Client-Version", CLIENT_VERSION).header("X-YouTube-Page-CL", PAGE_CL)
						.header("X-YouTube-Page-Label", PAGE_LABEL).header("X-YouTube-STS", PAGE_STS).header("X-YouTube-Utc-Offset", UTC_OFFSET)
						.header("X-YouTube-Variants-Checksum", VARIANTS_CHECKSUM).create()
				: HttpClient.getString().url("https://www.youtube.com/youtubei/v1/search?key=" + YouTubeExtractorConstants.API_KEY)
						.timeout(Duration.ofSeconds(15)).header(new Entry("Referrer", url)).header(new Entry("X-SPF-Previous", url))
						.header(new Entry("X-SPF-Referer", url)).header("Content-Type", "application/json")
						.header(new Entry("Cookie",
								"VISITOR_INFO1_LIVE=OGsdujEIYks; CONSENT=WP.27d57b.27d686.27d7a8; PREF=f1=50000000&f5=30000; YSC=K6ZTRR-CFKc; GPS=1; ST-1t9uroa=oq=nislt&gs_l=youtube.1.0.0i71k1l10.0.0.1.197055.0.0.0.0.0.0.0.0..0.0....0...1ac..64.youtube..0.0.0....0.T6ee2SoW8xg&feature=web-masthead-search&itct=CCQQ7VAiEwjU25GloOrkAhWd_FUKHXi4CEg%3D&csn=XnaKXcafAdah8gOZny4"))
						.header("X-YouTube-Client-Name", "1").header("X-YouTube-Client-Version", CLIENT_VERSION).create(HttpMethod.POST, ro.toString()));
		final String resp = r.dataThenClose();
		// JVM.println(resp);
		if (resp.equals("{\"reload\":\"now\"}")) {
			log.info("{clientVersion: " + CLIENT_VERSION + ",pageCl: " + PAGE_CL + ", pageLabel: " + PAGE_LABEL + ", pageSTS: " + PAGE_STS + ", UTC_OFFSET: "
					+ UTC_OFFSET + ", checksum: " + VARIANTS_CHECKSUM + "}");
			throw new UnsupportedOperationException("searchFor(string) -> Failed to contact API!");
		} else if (resp.startsWith("<") && resp.endsWith(">")) {
			throw new UnsupportedOperationException("searchFor(string) -> Got a HTML response for a JSON API!");
		} else {
			final UniJsonValue a;
			final boolean isArr = resp.startsWith("[");
			if (isArr)
				a = UniJsonValue.parse(resp).asArray();
			else
				a = UniJsonValue.parse(resp);
			if (a == null || a.isNull()) {
				log.error("Failed to parse response!");
				log.debug("response: " + resp);
				return null;
			}
			final UniJsonValue response;
			if (isArr) {
				final UniJsonValue o = a.getJsonObject(1);
				response = o.get("response");
			} else {
				if (a.contains("error")) {
					log.error("Failed to request continued search! Bailing out.");
					log.error(a.get("error"));
					return null;
				}
				response = a;
			}
			__assert(response == null, "response == null");
			UniJsonValue _contents = null;
			if (continuation != null && !isArr) {
				if (response.contains("onResponseReceivedCommands")) {
					_contents = response.get("onResponseReceivedCommands").first().get("appendContinuationItemsAction").get("continuationItems").first()
							.get("itemSectionRenderer");
				} else {
					if (!response.contains("continuationContents") && response.contains("contents")
							&& response.get("contents").contains("twoColumnSearchResultsRenderer")) {
						_contents = response.get("contents").get("twoColumnSearchResultsRenderer").get("primaryContents").get("sectionListRenderer")
								.get("contents").first().get("itemSectionRenderer");
					} else if (response.contains("onResponseReceivedCommands")) {
						_contents = response.get("onResponseReceivedCommands").first().get("appendContinuationItemsAction").get("continuationItems").first()
								.get("itemSectionRenderer");
					} else {
						_contents = response.get("continuationContents").get("itemSectionContinuation");
					}
				}
			} else if (continuation != null) {
				try {
					if (!response.contains("continuationContents") && response.contains("contents")
							&& response.get("contents").contains("twoColumnSearchResultsRenderer")) {
						_contents = response.get("contents").get("twoColumnSearchResultsRenderer").get("primaryContents").get("sectionListRenderer")
								.get("contents").first().get("itemSectionRenderer");
					} else if (response.contains("onResponseReceivedCommands")) {
						_contents = response.get("onResponseReceivedCommands").first().get("appendContinuationItemsAction").get("continuationItems").first()
								.get("itemSectionRenderer");
					} else {
						_contents = response.get("continuationContents").get("itemSectionContinuation");
					}
				} catch (Exception e) {
					log.warn("Failed to get continuation of itemSection!");
					log.warn("response: " + response);
					log.error(e);
				}
			} else {
				final UniJsonValue _p = response.contains("response") ? response.get("response") : response;
				final UniJsonValue p = _p.mget("contents.twoColumnSearchResultsRenderer.primaryContents");
				if (p == null) {
					log.debug(response);
					log.error("Failed to find primaryContents!");
					return null;
				}
				if (!p.contains("sectionListRenderer", "richGridRenderer")) {
					log.error("Failed to find sectionListRenderer/richGridRenderer!");
					log.debug(p);
					return null;
				} else if (p.contains("richGridRenderer")) {
					for (UniJsonValue so : p.get("richGridRenderer").get("contents").asArray()) {
						if (so.hasValue("richItemRenderer")) {
							_contents = p.get("richGridRenderer").get("contents").asArray();
							break;
						}
					}
				} else {
					for (UniJsonValue so : p.get("sectionListRenderer").get("contents").asArray()) {
						if (so.hasValue("itemSectionRenderer")) {
							_contents = so.get("itemSectionRenderer");
							if (_contents.hasValue("contents") && (_contents.get("contents").get(0).hasValue("promotedSparklesTextSearchRenderer")
									|| _contents.get("contents").get(0).hasValue("carouselAdRenderer"))) {
								continue;
							}
							break;
						}
					}
				}
			}
			final boolean isContentsAnArray = _contents.isArray();
			final UniJsonValue contents = isContentsAnArray ? _contents : _contents.get("contents").asArray();
			__assert(contents == null, "contents == null");
			String cnts = null;
			try {
				if (_contents.hasValue("continuations")) {
					for (final UniJsonValue so : _contents.get("continuations").asArray()) {
						if (so.hasValue("nextContinuationData")) {
							cnts = so.get("nextContinuationData").getString("continuation");
							break;
						}
					}
				} else if (!response.contains("continuationContents") && response.contains("contents")
						&& response.get("contents").contains("twoColumnSearchResultsRenderer")) {
					try {
						final boolean preferTwoColumns = response.contains("onResponseReceivedCommands") && response.get("onResponseReceivedCommands").isArray()
								&& !response.get("onResponseReceivedCommands").first().contains("appendContinuationItemsAction");
						if (response.contains("onResponseReceivedCommands") && !preferTwoColumns) {
							final UniJsonValue __rx = response.get("onResponseReceivedCommands").first();
							__assert(__rx == null, "_rx == null");
							if (__rx.contains("appendContinuationItemsAction")) {
								final UniJsonValue _rx = __rx.get("appendContinuationItemsAction");
								if (_rx.contains("continuationItems")) {
									final UniJsonValue rx = _rx.get("continuationItems").last();
									if (rx.contains("continuationItemRenderer")) {
										cnts = rx.get("continuationItemRenderer").get("continuationEndpoint").get("continuationCommand").getString("token");
									} else
										log.warn("Missing: continuations [api=2-cont]");
								} else {
									log.warn("Missing: continuations [api=2-cont-orrc,preferTwoColumns=" + preferTwoColumns + "]");
								}
							} else {
								log.warn("Missing: continuations [api=2-cont-norx,preferTwoColumns=" + preferTwoColumns + "]");
							}
						} else {
							final UniJsonValue rx0 = response.get("contents").get("twoColumnSearchResultsRenderer").get("primaryContents");
							__assert(rx0 == null || rx0.isNull(), "rx0 == null");
							final UniJsonValue rx = (rx0.contains("richGridRenderer") ? rx0.get("richGridRenderer") : rx0.get("sectionListRenderer"))
									.get("contents").last();
							if (rx.contains("continuationItemRenderer")) {
								cnts = rx.get("continuationItemRenderer").get("continuationEndpoint").get("continuationCommand").getString("token");
							} else {
								log.warn("Missing: continuations [api=2,preferTwoColumns=" + preferTwoColumns + "]");
								log.dwarn(rx0);
							}
						}
					} catch (Exception ex) {
						log.error("Failed to get continuations!", ex);
					}
				} else if (response.contains("response") && !response.get("response").contains("continuationContents")
						&& response.get("response").contains("contents")
						&& response.get("response").get("contents").contains("twoColumnSearchResultsRenderer")) {
					if (response.contains("onResponseReceivedCommands")) {
						final UniJsonValue rx = response.get("onResponseReceivedCommands").first().get("appendContinuationItemsAction").get("continuationItems")
								.last();
						if (rx.contains("continuationItemRenderer")) {
							cnts = rx.get("continuationItemRenderer").get("continuationEndpoint").get("continuationCommand").getString("token");
						} else
							log.warn("Missing: continuations [api=2-cont]");
					} else {
						final UniJsonValue rx0 = response.get("response").get("contents").get("twoColumnSearchResultsRenderer").get("primaryContents");
						final UniJsonValue rx = (rx0.contains("richGridRenderer") ? rx0.get("richGridRenderer") : rx0.get("sectionListRenderer"))
								.get("contents").last();
						if (rx.contains("continuationItemRenderer")) {
							cnts = rx.get("continuationItemRenderer").get("continuationEndpoint").get("continuationCommand").getString("token");
						} else {
							log.warn("Missing: continuations [api=2]");
							log.dwarn(rx0);
						}
					}
				} else if (response.contains("onResponseReceivedCommands")) {
					final UniJsonValue rx = response.get("onResponseReceivedCommands").first().get("appendContinuationItemsAction").get("continuationItems")
							.last();
					if (rx.contains("continuationItemRenderer")) {
						cnts = rx.get("continuationItemRenderer").get("continuationEndpoint").get("continuationCommand").getString("token");
					} else
						log.warn("Missing: continuations [api=2-cont]");
				} else {
					log.warn("Missing: continuations");
					log.dwarn(response);
				}
			} catch (Exception e) {
				log.error(response.toString(), e);
				throw new RuntimeException(e);
			}
			final YouTubeSearchQuery output = new YouTubeSearchQuery(query, cnts);
			for (int i = 0; i < contents.size(); i++) {
				UniJsonValue _v = contents.get(i);
				if (_v.contains("richItemRenderer")) {
					_v = _v.get("richItemRenderer").get("content");
				}
				try {
					final boolean isNonVideo = !_v.hasValue("videoRenderer");
					final boolean isChannel = isNonVideo && _v.hasValue("channelRenderer");
					final boolean isPlaylist = isNonVideo && _v.hasValue("playlistRenderer");
					final boolean isRelatedCard = isNonVideo && _v.hasValue("horizontalCardListRenderer");
					final boolean isPopularVideos = isNonVideo && _v.hasValue("shelfRenderer");
					final boolean isGlobalPlaylist = isNonVideo && _v.hasValue("radioRenderer");
					final boolean isShow = isNonVideo && _v.hasValue("showRenderer");
					final boolean isCorrection = isNonVideo && _v.hasValue("showingResultsForRenderer"); // nice spelling [clap]
					final boolean isPromoted = isNonVideo && (_v.hasValue("promotedSparklesWebRenderer") || _v.hasValue("adSlotRenderer"));
					final boolean isShorts = isNonVideo && _v.hasValue("reelShelfRenderer");
					if (!isNonVideo) {
						final UniJsonValue v = _v.get("videoRenderer");
						final YouTubeSearchResult vr = new YouTubeSearchResult(v, ResultType.VIDEO);
						output.addResult(vr);
					} else if (isChannel) {
						final UniJsonValue v = _v.get("channelRenderer");
						final YouTubeSearchResult vr = new YouTubeSearchResult(v, ResultType.CHANNEL);
						output.addResult(vr);
					} else if (isPlaylist) {
						final UniJsonValue v = _v.get("playlistRenderer");
						final YouTubeSearchResult vr = new YouTubeSearchResult(v, ResultType.PLAYLIST);
						output.addResult(vr);
					} else if (isRelatedCard) {
						log.warn("Skipped unsupported search result. [type=RELATED_CARD]");
						continue;
					} else if (isPopularVideos) {
						/*
						 * {"shelfRenderer":{"title":{"simpleText":"Popularne filmy z kanału jacksfilms"
						 * },"content":{"verticalListRenderer":{"items":[{"videoRenderer":{"videoId":
						 * "h05ZQ7WHw8Y","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/h05ZQ7WHw8Y/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLAkvM6TAFR0djjo7DDOUt87K5kgfQ"
						 * ,"width":245,"height":137}],"webThumbnailDetailsExtensionData":{"isPreloaded"
						 * :true}},"title":{"runs":[{"text":"The WTF Blanket (Snuggie Parody)"}],
						 * "accessibility":{"accessibilityData":{
						 * "label":"The WTF Blanket (Snuggie Parody) Autor: jacksfilms 10 lat temu 1 minuta i 55 sekund 24 540 903 wyświetlenia"
						 * }}},"descriptionSnippet":{"runs":[{"text":"Buy the t-shirt! http://"},{"text"
						 * :"jacksfilms","bold":true},{
						 * "text":".viralprints.com/shop/product/380 Featured on CNN, \"CollegeHumor\" and \"Today's BIG Thing!"
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"10 lat temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"1 minuta i 55 sekund"}},
						 * "simpleText":"1:55"},"viewCountText":{"simpleText":"24 540 903 wyświetlenia"}
						 * ,"navigationEndpoint":{"clickTrackingParams":
						 * "CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As8yBnNlYXJjaFIKamFja3NmaWxtcw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=h05ZQ7WHw8Y",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"h05ZQ7WHw8Y"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As8="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":
						 * "CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As9AxoefrLuolqeHAQ==","showActionMenu":
						 * false,"shortViewCountText":{"simpleText":"24 mln wyświetleń"},
						 * "channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{
						 * "thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"1 minuta i 55 sekund"}},
						 * "simpleText":"1:55"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "h05ZQ7WHw8Y","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CIIBENwwGAAiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"h05ZQ7WHw8Y"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/h05ZQ7WHw8Y/mqdefault_6s.webp?du=3000&sqp=CKqBr-wF&rs=AOn4CLAiMNWnI6L02bumfhidOvtlqN37Gg"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"MO0zP-SB5hk","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/MO0zP-SB5hk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLAQzFldOzR2KbQMDK4TMzjeTcXTjQ"
						 * ,"width":245,"height":137}],"webThumbnailDetailsExtensionData":{"isPreloaded"
						 * :true}},"title":{"runs":[{"text":"FIXING YOUR FLAGS (YIAY #276)"}],
						 * "accessibility":{"accessibilityData":{
						 * "label":"FIXING YOUR FLAGS (YIAY #276) Autor: jacksfilms 3 lata temu 10 minut 16 566 685 wyświetleń"
						 * }}},"descriptionSnippet":{"runs":[{
						 * "text":"Get $50 off your Rad Power Bike today! http://www.radpowerbikes.com/jack Previous YIAY: ..."
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"3 lata temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"10 minut"}},"simpleText":
						 * "10:49"},"viewCountText":{"simpleText":"16 566 685 wyświetleń"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As8yBnNlYXJjaFIKamFja3NmaWxtcw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=MO0zP-SB5hk",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"MO0zP-SB5hk"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As8="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As9AmcyHpP7nzPYw",
						 * "showActionMenu":false,"shortViewCountText":{"simpleText":"16 mln wyświetleń"
						 * },"channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{
						 * "thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"10 minut"}},"simpleText":
						 * "10:49"},"style":"DEFAULT"}},{"thumbnailOverlayToggleButtonRenderer":{
						 * "isToggled":false,"untoggledIcon":{"iconType":"WATCH_LATER"},"toggledIcon":{
						 * "iconType":"CHECK"},"untoggledTooltip":"Do obejrzenia","toggledTooltip":
						 * "Dodano","untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "MO0zP-SB5hk","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CIEBENwwGAEiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"MO0zP-SB5hk"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/MO0zP-SB5hk/mqdefault_6s.webp?du=3000&sqp=CM2Vr-wF&rs=AOn4CLDaBeKkXo7bghNc2LpIgITgDJsDaQ"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"Ge_22K0UTIY","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/Ge_22K0UTIY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLA4TaAhdRfouQrx0bKDCznXCnrvyQ"
						 * ,"width":245,"height":137}],"webThumbnailDetailsExtensionData":{"isPreloaded"
						 * :true}},"title":{"runs":[{"text":"PRO FIDGET SPINNER TRICKS (very cool)"}],
						 * "accessibility":{"accessibilityData":{
						 * "label":"PRO FIDGET SPINNER TRICKS (very cool) Autor: jacksfilms 2 lata temu 2 minuty i 22 sekundy 13 531 361 wyświetleń"
						 * }}},"descriptionSnippet":{"runs":[{
						 * "text":"Subscribe ▻ http://bit.ly/SubscribeJacksfilms Merch ▻ https://crowdmade.com/collections/"
						 * },{"text":"jacksfilms","bold":true},{"text":" Twitter ..."}]},
						 * "longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"2 lata temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"2 minuty i 22 sekundy"}},
						 * "simpleText":"2:22"},"viewCountText":{"simpleText":"13 531 361 wyświetleń"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As8yBnNlYXJjaFIKamFja3NmaWxtcw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=Ge_22K0UTIY",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"Ge_22K0UTIY"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As8="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As9AhpnR6Irb_fcZ",
						 * "showActionMenu":false,"shortViewCountText":{"simpleText":"13 mln wyświetleń"
						 * },"channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{
						 * "thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"2 minuty i 22 sekundy"}},
						 * "simpleText":"2:22"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As8=","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "Ge_22K0UTIY","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CIABENwwGAIiEwjcxp-36ezkAhXN5VUKHXh2As8=",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"Ge_22K0UTIY"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/Ge_22K0UTIY/mqdefault_6s.webp?du=3000&sqp=CJb_ruwF&rs=AOn4CLDo3VCDBnjcyXN698AeE-AsEtPHpA"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"VDB65S6rCC0","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/VDB65S6rCC0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLDzmeerbISwdUs_3djxWrJdc6GuDQ"
						 * ,"width":245,"height":137}],"webThumbnailDetailsExtensionData":{"isPreloaded"
						 * :true}},"title":{"runs":[{"text":"Top 10 YouTube Videos"}],"accessibility":{
						 * "accessibilityData":{
						 * "label":"Top 10 YouTube Videos Autor: jacksfilms 4 lata temu 3 minuty i 11 sekund 13 116 545 wyświetleń"
						 * }}},"descriptionSnippet":{"runs":[{
						 * "text":"iTUNES: http://itunes.apple.com/us/artist/jack-douglass/id422095509 JACKISANERD: http://www.youtube.com/jackisanerd ..."
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"4 lata temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"3 minuty i 11 sekund"}},
						 * "simpleText":"3:11"},"viewCountText":{"simpleText":"13 116 545 wyświetleń"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCzzIGc2VhcmNoUgpqYWNrc2ZpbG1z",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=VDB65S6rCC0",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"VDB65S6rCC0"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCzw=="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCz0CtkKz10tyemFQ=",
						 * "showActionMenu":false,"shortViewCountText":{"simpleText":"13 mln wyświetleń"
						 * },"channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{
						 * "thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"3 minuty i 11 sekund"}},
						 * "simpleText":"3:11"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "VDB65S6rCC0","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CH8Q3DAYAyITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"VDB65S6rCC0"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/VDB65S6rCC0/mqdefault_6s.webp?du=3000&sqp=CNaAr-wF&rs=AOn4CLDWVAwuqBatQFxRSjFDagAu3JHQwQ"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"AEmPk7uAQ34","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/AEmPk7uAQ34/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLCal1mhU80SoH9Z_nFr3GxQtxvycw"
						 * ,"width":245,"height":137}],"webThumbnailDetailsExtensionData":{"isPreloaded"
						 * :true}},"title":{"runs":[{"text":"YOUR GRAMMAR SUCKS #100"}],"accessibility":
						 * {"accessibilityData":{
						 * "label":"YOUR GRAMMAR SUCKS #100 Autor: jacksfilms 3 lata temu 1 godzina i 2 minuty 12 211 834 wyświetlenia"
						 * }}},"descriptionSnippet":{"runs":[{
						 * "text":"In order of appearance: Sean Klitzner: http://www.youtube.com/seanklitzner Toby Turner: http://www.youtube.com/tobuscus ..."
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"3 lata temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"1 godzina i 2 minuty"}},
						 * "simpleText":"1:02:28"},"viewCountText":{
						 * "simpleText":"12 211 834 wyświetlenia"},"navigationEndpoint":{
						 * "clickTrackingParams":
						 * "CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCzzIGc2VhcmNoUgpqYWNrc2ZpbG1z",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=AEmPk7uAQ34",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"AEmPk7uAQ34"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCzw=="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCz0D-hoHcu_LjJA==",
						 * "showActionMenu":false,"shortViewCountText":{"simpleText":"12 mln wyświetleń"
						 * },"channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{
						 * "thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"1 godzina i 2 minuty"}},
						 * "simpleText":"1:02:28"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "AEmPk7uAQ34","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CH4Q3DAYBCITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"AEmPk7uAQ34"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/AEmPk7uAQ34/mqdefault_6s.webp?du=3000&sqp=CK6dr-wF&rs=AOn4CLAqxdVhVsMHi41e-6nbf9cFfCrB6g"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"aV4Nli38vDU","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/aV4Nli38vDU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLDMYdRJEOr6EpXSYaSKLWj1njwHWw"
						 * ,"width":245,"height":137}],"webThumbnailDetailsExtensionData":{"isPreloaded"
						 * :true}},"title":{"runs":[{"text":"FIX YOUR ART (YIAY #388)"}],"accessibility"
						 * :{"accessibilityData":{
						 * "label":"FIX YOUR ART (YIAY #388) Autor: jacksfilms 1 rok temu 9 minut i 43 sekundy 10 929 829 wyświetleń"
						 * }}},"descriptionSnippet":{"runs":[{
						 * "text":"Thanks to Chromebooks for sponsoring this video! Find out more about Chromebooks here: https://goo.gl/zZyM4s PREVIOUS ..."
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"1 rok temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"9 minut i 43 sekundy"}},
						 * "simpleText":"9:43"},"viewCountText":{"simpleText":"10 929 829 wyświetleń"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCzzIGc2VhcmNoUgpqYWNrc2ZpbG1z",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=aV4Nli38vDU",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"aV4Nli38vDU"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCzw=="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCz0C1-PLv4rKDr2k=",
						 * "showActionMenu":false,"shortViewCountText":{"simpleText":"10 mln wyświetleń"
						 * },"channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{
						 * "thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"9 minut i 43 sekundy"}},
						 * "simpleText":"9:43"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "aV4Nli38vDU","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CH0Q3DAYBSITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"aV4Nli38vDU"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/aV4Nli38vDU/mqdefault_6s.webp?du=3000&sqp=CNKer-wF&rs=AOn4CLAW37ylrDK1T17PGDElwpalfCd-FA"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"lsTLUSMOgas","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/lsTLUSMOgas/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABgAEB&rs=AOn4CLCKSZkDcV62M5gh-c2xOMbIZWrVuw"
						 * ,"width":168,"height":94},{"url":
						 * "https://i.ytimg.com/vi/lsTLUSMOgas/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABgAEB&rs=AOn4CLCtvNyifB0zBmHADpj98yJhMhUdIw"
						 * ,"width":196,"height":110},{"url":
						 * "https://i.ytimg.com/vi/lsTLUSMOgas/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLBDZzoc28rg08zmt_dZiUxlMqcneA"
						 * ,"width":246,"height":138},{"url":
						 * "https://i.ytimg.com/vi/lsTLUSMOgas/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLBrQjHE-N2RMyd9BTxNM2DLDosHlQ"
						 * ,"width":336,"height":188}]},"title":{"runs":[{
						 * "text":"The Jesus Christ Sponge (Shamwow Parody)"}],"accessibility":{
						 * "accessibilityData":{
						 * "label":"The Jesus Christ Sponge (Shamwow Parody) Autor: jacksfilms 10 lat temu 1 minuta i 17 sekund 10 856 777 wyświetleń"
						 * }}},"descriptionSnippet":{"runs":[{"text":"Buy the t-shirt! http://"},{"text"
						 * :"jacksfilms","bold":true},{
						 * "text":".viralprints.com/shop/product/390 Jesus Christ, that's one unnecessarily absorbent sponge. Special ..."
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"10 lat temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"1 minuta i 17 sekund"}},
						 * "simpleText":"1:17"},"viewCountText":{"simpleText":"10 856 777 wyświetleń"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCzzIGc2VhcmNoUgpqYWNrc2ZpbG1z",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=lsTLUSMOgas",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"lsTLUSMOgas"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCzw=="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCz0Crg7qYkuqy4pYB",
						 * "showActionMenu":false,"shortViewCountText":{"simpleText":"10 mln wyświetleń"
						 * },"channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{
						 * "thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"1 minuta i 17 sekund"}},
						 * "simpleText":"1:17"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "lsTLUSMOgas","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CHwQ3DAYBiITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"lsTLUSMOgas"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/lsTLUSMOgas/mqdefault_6s.webp?du=3000&sqp=CLjgruwF&rs=AOn4CLBnl0Q4Pu_3feVmBSoYzfPGFpydBg"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"6jdCzTo4mN0","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/6jdCzTo4mN0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABgAEB&rs=AOn4CLCMqzCVY7lQKB0BwOn0QnBQc8B85A"
						 * ,"width":168,"height":94},{"url":
						 * "https://i.ytimg.com/vi/6jdCzTo4mN0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABgAEB&rs=AOn4CLAAy6l6GefQk-mBIZNKTR6syRi9dg"
						 * ,"width":196,"height":110},{"url":
						 * "https://i.ytimg.com/vi/6jdCzTo4mN0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLCQpUmt0AKZcXnurj2MlNPrjvqSdw"
						 * ,"width":246,"height":138},{"url":
						 * "https://i.ytimg.com/vi/6jdCzTo4mN0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLAX_XYxFk5JANuWh4U9GDNt66iRHg"
						 * ,"width":336,"height":188}]},"title":{"runs":[{
						 * "text":"YOUR AWFUL, AWFUL INTROS (YIAY #370)"}],"accessibility":{
						 * "accessibilityData":{
						 * "label":"YOUR AWFUL, AWFUL INTROS (YIAY #370) Autor: jacksfilms 1 rok temu 8 minut i 28 sekund 10 791 558 wyświetleń"
						 * }}},"descriptionSnippet":{"runs":[{
						 * "text":"Make your own website today! http://www.squarespace.com/jack Use code JACK to save 10% off your 1st purchase! And submit ..."
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"1 rok temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"8 minut i 28 sekund"}},
						 * "simpleText":"8:28"},"viewCountText":{"simpleText":"10 791 558 wyświetleń"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCzzIGc2VhcmNoUgpqYWNrc2ZpbG1z",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=6jdCzTo4mN0",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"6jdCzTo4mN0"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCzw=="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCz0DdseLR09nQm-oB",
						 * "showActionMenu":false,"shortViewCountText":{"simpleText":"10 mln wyświetleń"
						 * },"channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{
						 * "thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"8 minut i 28 sekund"}},
						 * "simpleText":"8:28"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "6jdCzTo4mN0","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CHsQ3DAYByITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"6jdCzTo4mN0"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/6jdCzTo4mN0/mqdefault_6s.webp?du=3000&sqp=CK7QruwF&rs=AOn4CLDwphPD9PHDLygzoSpP7QL94NB9PA"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"J3ywroqsgPk","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/J3ywroqsgPk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABgAEB&rs=AOn4CLAcvqWlW7KWlzLVlBQrie8knCCxLg"
						 * ,"width":168,"height":94},{"url":
						 * "https://i.ytimg.com/vi/J3ywroqsgPk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABgAEB&rs=AOn4CLA6haCEkGp0OfcZg5CXu5vcrffD6A"
						 * ,"width":196,"height":110},{"url":
						 * "https://i.ytimg.com/vi/J3ywroqsgPk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLDcwwX9LWwgI4TbwaCmrG_t-R2VMQ"
						 * ,"width":246,"height":138},{"url":
						 * "https://i.ytimg.com/vi/J3ywroqsgPk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLBCG3Lar5RycGZFiOnsQWFjlR2DWA"
						 * ,"width":336,"height":188}]},"title":{"runs":[{"text":"KERMIT SINGS"}],
						 * "accessibility":{"accessibilityData":{
						 * "label":"KERMIT SINGS Autor: jacksfilms 5 lat temu 1 minuta i 51 sekund 9 852 748 wyświetleń"
						 * }}},"descriptionSnippet":{"runs":[{
						 * "text":"Animated by RageNineteen: http://www.youtube.com/ragenineteen Free ringtones of all 4 songs below! Corpse ..."
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"5 lat temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"1 minuta i 51 sekund"}},
						 * "simpleText":"1:51"},"viewCountText":{"simpleText":"9 852 748 wyświetleń"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCzzIGc2VhcmNoUgpqYWNrc2ZpbG1z",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=J3ywroqsgPk",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"J3ywroqsgPk"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCzw=="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCz0D5gbLV6JWsvic=",
						 * "showActionMenu":false,"shortViewCountText":{
						 * "simpleText":"9,8 mln wyświetleń"},"channelThumbnailSupportedRenderers":{
						 * "channelThumbnailWithLinkRenderer":{"thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"1 minuta i 51 sekund"}},
						 * "simpleText":"1:51"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "J3ywroqsgPk","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CHoQ3DAYCCITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"J3ywroqsgPk"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/J3ywroqsgPk/mqdefault_6s.webp?du=3000&sqp=COj-ruwF&rs=AOn4CLCNb6gmNhw9hPGNkFB75_7_Yx7M0g"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}},{"videoRenderer":{
						 * "videoId":"ketCUtFpzNo","thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/ketCUtFpzNo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABgAEB&rs=AOn4CLCyDS90rKgEthIQdor0Ih2qrqHGDA"
						 * ,"width":168,"height":94},{"url":
						 * "https://i.ytimg.com/vi/ketCUtFpzNo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABgAEB&rs=AOn4CLCPSksiKVf7BnN0KF7ruPWIlV_UiQ"
						 * ,"width":196,"height":110},{"url":
						 * "https://i.ytimg.com/vi/ketCUtFpzNo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLDeFxAfRwPOrs0PzHQGmtQ1cLy5YA"
						 * ,"width":246,"height":138},{"url":
						 * "https://i.ytimg.com/vi/ketCUtFpzNo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAYABAQ==&rs=AOn4CLBgh5xKDBgu0sA0JJhTjMumiJm25A"
						 * ,"width":336,"height":188}]},"title":{"runs":[{
						 * "text":"$10,000 DOG VS. $1 DOG"}],"accessibility":{"accessibilityData":{
						 * "label":"$10,000 DOG VS. $1 DOG Autor: jacksfilms 1 rok temu 2 minuty i 56 sekund 8 303 452 wyświetlenia"
						 * }}},"descriptionSnippet":{"runs":[{
						 * "text":"MORE FILTH ▻ https://www.youtube.com/watch?v=w58C1Vu10Is&list=PLiWL8lZPZ2_kafFTewyr06GuSPFd0m8hf&index=1 ..."
						 * }]},"longBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"publishedTimeText":{"simpleText":"1 rok temu"},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"2 minuty i 56 sekund"}},
						 * "simpleText":"2:56"},"viewCountText":{"simpleText":"8 303 452 wyświetlenia"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCzzIGc2VhcmNoUgpqYWNrc2ZpbG1z",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/watch?v=ketCUtFpzNo",
						 * "webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{
						 * "videoId":"ketCUtFpzNo"}},"ownerBadges":[{"metadataBadgeRenderer":{"icon":{
						 * "iconType":"CHECK_CIRCLE_THICK"},"style":"BADGE_STYLE_TYPE_VERIFIED",
						 * "tooltip":"Zweryfikowano","trackingParams":
						 * "CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCzw=="}}],"ownerText":{"runs":[{"text":
						 * "jacksfilms","navigationEndpoint":{"clickTrackingParams":
						 * "CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}}]},
						 * "shortBylineText":{"runs":[{"text":"jacksfilms","navigationEndpoint":{
						 * "clickTrackingParams":"CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/user/jacksfilms",
						 * "webPageType":"WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{
						 * "browseId":"UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}}
						 * }]},"trackingParams":"CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCz0DamaeLrcrQ9ZEB",
						 * "showActionMenu":false,"shortViewCountText":{
						 * "simpleText":"8,3 mln wyświetleń"},"channelThumbnailSupportedRenderers":{
						 * "channelThumbnailWithLinkRenderer":{"thumbnail":{"thumbnails":[{"url":
						 * "https://yt3.ggpht.com/a-/AAuE7mCzasGKAtKleB1hVpdCJoIqXadnj_yFT0DkuA=s68-c-k-c0x00ffffff-no-rj-mo"
						 * ,"width":68,"height":68}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/user/jacksfilms","webPageType":
						 * "WEB_PAGE_TYPE_BROWSE","rootVe":3611}},"browseEndpoint":{"browseId":
						 * "UCPcFg7aBbaVzXoIKSNqwaww","canonicalBaseUrl":"/user/jacksfilms"}},
						 * "accessibility":{"accessibilityData":{"label":"Przejdź na kanał"}}}},
						 * "thumbnailOverlays":[{"thumbnailOverlayTimeStatusRenderer":{"text":{
						 * "accessibility":{"accessibilityData":{"label":"2 minuty i 56 sekund"}},
						 * "simpleText":"2:56"},"style":"DEFAULT"}},{
						 * "thumbnailOverlayToggleButtonRenderer":{"isToggled":false,"untoggledIcon":{
						 * "iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},
						 * "untoggledTooltip":"Do obejrzenia","toggledTooltip":"Dodano",
						 * "untoggledServiceEndpoint":{"clickTrackingParams":
						 * "CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCzw==","commandMetadata":{
						 * "webCommandMetadata":{"url":"/service_ajax","sendPost":true}},
						 * "playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":
						 * "ketCUtFpzNo","action":"ACTION_ADD_VIDEO"}]}},"toggledServiceEndpoint":{
						 * "clickTrackingParams":"CHkQ3DAYCSITCNzGn7fp7OQCFc3lVQodeHYCzw==",
						 * "commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":
						 * true}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":
						 * "ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"ketCUtFpzNo"}]}},
						 * "untoggledAccessibility":{"accessibilityData":{"label":"Do obejrzenia"}},
						 * "toggledAccessibility":{"accessibilityData":{"label":"Dodano"}}}},{
						 * "thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"richThumbnail":{"movingThumbnailRenderer":{
						 * "movingThumbnailDetails":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/an_webp/ketCUtFpzNo/mqdefault_6s.webp?du=3000&sqp=CIKSr-wF&rs=AOn4CLDhgXN0jhl9Rz6IoFTcQrsgi8ZOKA"
						 * ,"width":320,"height":180}],"logAsMovingThumbnail":true},
						 * "enableHoveredLogging":true,"enableOverlay":true}}}}],"collapsedItemCount":2,
						 * "collapsedStateButtonText":{"runs":[{"text":"i "},{"text":"8"},{
						 * "text":" więcej"}],"accessibility":{"accessibilityData":{"label":"i 8 więcej"
						 * }}},"trackingParams":"CHgQuj4iEwjcxp-36ezkAhXN5VUKHXh2As8="}},
						 * "trackingParams":"CHcQ3BwYBSITCNzGn7fp7OQCFc3lVQodeHYCzw=="}}
						 */
						log.warn("Skipped unsupported search result. [type=CHANNEL_POPULAR_VIDEOS_CARD]");
						continue;
					} else if (isGlobalPlaylist) {
						/*
						 * {"radioRenderer":{"playlistId":"RDQMfGoQ5l4eXrw","title":{"simpleText":"Tf2"}
						 * ,"thumbnail":{"thumbnails":[{"url":
						 * "https://i.ytimg.com/vi/36lSzUMBJnc/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLA2q5KubaoXAAjPRG9A_EBg1ckvAA"
						 * ,"width":168,"height":94},{"url":
						 * "https://i.ytimg.com/vi/36lSzUMBJnc/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLC_7uGSMmaQ8pu7JqwFFz76Yvs1oA"
						 * ,"width":196,"height":110},{"url":
						 * "https://i.ytimg.com/vi/36lSzUMBJnc/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDyPVXWNBFZJ4UgtT9yDcNycA7m1Q"
						 * ,"width":246,"height":138},{"url":
						 * "https://i.ytimg.com/vi/36lSzUMBJnc/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBv4QKe9SJyKSueJX1YyiMIpORoGQ"
						 * ,"width":336,"height":188}]},"videoCountText":{"runs":[{
						 * "text":"Ponad 50 filmów"}]},"navigationEndpoint":{"clickTrackingParams":
						 * "CE8QuzcYEyITCICdy_Du7OQCFUVAegUdIJEPBzIGc2VhcmNo","commandMetadata":{
						 * "webCommandMetadata":{"url":
						 * "/watch?v=36lSzUMBJnc&list=RDQMfGoQ5l4eXrw&start_radio=1","webPageType":
						 * "WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{"videoId":
						 * "36lSzUMBJnc","playlistId":"RDQMfGoQ5l4eXrw","params":"OALAAQE%3D",
						 * "continuePlayback":true}},"shortBylineText":{"simpleText":"YouTube"},
						 * "trackingParams":"CE8QuzcYEyITCICdy_Du7OQCFUVAegUdIJEPBw==","videos":[{
						 * "childVideoRenderer":{"title":{"simpleText":"Meet the Medic"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CE8QuzcYEyITCICdy_Du7OQCFUVAegUdIJEPBzIGc2VhcmNo","commandMetadata":{
						 * "webCommandMetadata":{"url":
						 * "/watch?v=36lSzUMBJnc&list=RDQMfGoQ5l4eXrw&start_radio=1","webPageType":
						 * "WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{"videoId":
						 * "36lSzUMBJnc","playlistId":"RDQMfGoQ5l4eXrw","params":"wAEB"}},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"4 minuty i 10 sekund"}},
						 * "simpleText":"4:10"},"videoId":"36lSzUMBJnc"}},{"childVideoRenderer":{"title"
						 * :{"simpleText":"MEI VS PYRO RAP BATTLE by JT Music (Overwatch vs TF2)"},
						 * "navigationEndpoint":{"clickTrackingParams":
						 * "CE8QuzcYEyITCICdy_Du7OQCFUVAegUdIJEPBzIGc2VhcmNo","commandMetadata":{
						 * "webCommandMetadata":{"url":
						 * "/watch?v=9oZ3Y2Hn10U&list=RDQMfGoQ5l4eXrw&start_radio=1","webPageType":
						 * "WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{"videoId":
						 * "9oZ3Y2Hn10U","playlistId":"RDQMfGoQ5l4eXrw","params":"wAEB"}},"lengthText":{
						 * "accessibility":{"accessibilityData":{"label":"3 minuty i 43 sekundy"}},
						 * "simpleText":"3:43"},"videoId":"9oZ3Y2Hn10U"}}],"thumbnailText":{"runs":[{
						 * "text":"Ponad "},{"text":"50","bold":true},{"text":" filmów"}]},
						 * "longBylineText":{"simpleText":"YouTube"},"thumbnailOverlays":[{
						 * "thumbnailOverlaySidePanelRenderer":{"text":{"runs":[{"text":"50+"}]},"icon":
						 * {"iconType":"WATCH_RELATED_MIX"}}},{"thumbnailOverlayHoverTextRenderer":{
						 * "text":{"runs":[{"text":"Odtwórz wszystkie"}]},"icon":{"iconType":"PLAY_ALL"}
						 * }},{"thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{
						 * "text":"Teraz odtwarzane"}]}}}],"videoCountShortText":{"runs":[{"text":"50+"}
						 * ]}}}
						 */
						log.warn("Skipped unsupported search result. [type=GLOBAL_PLAYLIST_CARD]");
						continue;
					} else if (isCorrection) {
						/*
						 * {"showingResultsForRenderer":{"correctedQueryEndpoint":{"commandMetadata":{
						 * "webCommandMetadata":{"rootVe":4724,"webPageType":"WEB_PAGE_TYPE_SEARCH",
						 * "url":"/results?search_query=Muse-%2BDefector"}},"searchEndpoint":{"query":
						 * "Muse-+Defector"},"clickTrackingParams":
						 * "CN0BEPAwGAAiEwjyjqGB3__qAhWVHLIKHd69DNg="},"trackingParams":
						 * "CN0BEPAwGAAiEwjyjqGB3__qAhWVHLIKHd69DNg=","showingResultsFor":{"runs":[{
						 * "text":"Wyświetlam wyniki dla"}]},"correctedQuery":{"runs":[{"italics":true,
						 * "text":"Muse"},{"text":"-+Defector"}]},"searchInsteadFor":{"runs":[{
						 * "text":"Zamiast tego wyszukaj"}]},"originalQueryEndpoint":{"commandMetadata":
						 * {"webCommandMetadata":{"rootVe":4724,"webPageType":"WEB_PAGE_TYPE_SEARCH",
						 * "url":"/results?search_query=Muse%2B-%2BDefector&sp=QgIIAQ%253D%253D"}},
						 * "searchEndpoint":{"query":"Muse+-+Defector","params":"QgIIAQ%3D%3D"},
						 * "clickTrackingParams":"CN0BEPAwGAAiEwjyjqGB3__qAhWVHLIKHd69DNg="},
						 * "originalQuery":{"simpleText":"Muse+-+Defector"}}}
						 */
						log.warn("Skipped unsupported search result. [type=CORRECTED_QUERY]");
						continue;
					} else if (isShow) {
						final UniJsonValue v = _v.get("showRenderer");
						final YouTubeSearchResult vr = new YouTubeSearchResult(v, ResultType.SHOW);
						output.addResult(vr);
					} else if (isPromoted) {
						log.warn("Skipped blacklisted search result. [type=PROMOTED_RENDERER]");
						continue;
					} else if (isShorts) {
						log.warn("Skipped unsupported search result. [type=SHORTS_REEL_SHELF]");
						continue;
					} else {
						if (!_v.contains("searchPyvRenderer")) {
							log.warn("Unimplemented result found!");
							_v.println();
						}
					}
				} catch (Exception e) {
					log.error("Failed to parse search result!", e);
					_v.println();
				}
			}
			return output;
		}
	}

	public static class YouTubeSearchQuery {
		private final String query;
		private final List<YouTubeSearchResult> results;
		private final String continuation;

		public YouTubeSearchQuery(final String query, final String continuation) {
			this.query = query;
			this.results = FastLists.list(15);
			this.continuation = continuation;
		}

		public String getContinuation() {
			return this.continuation;
		}

		public String getSearchQuery() {
			return this.query;
		}

		public List<YouTubeSearchResult> getResults() {
			return this.results;
		}

		protected boolean addResult(final YouTubeSearchResult result) {
			return this.results.add(result);
		}

		public void clear() {
			this.results.clear();
		}
	}

	public static class YouTubeSearchResult {
		public static enum ResultType {
			VIDEO,
			CHANNEL,
			PLAYLIST,
			SHOW;
		}

		private final String videoID;
		private final String videoTitle;
		private final String authorName;
		private String lengthText = "0:00";
		private String hoverPreviewUrl;
		private ResultType resultType = ResultType.VIDEO;
		private final String url;
		private String viewCount;

		public YouTubeSearchResult(final UniJsonValue o, final ResultType type) {
			if (type == null)
				throw new IllegalArgumentException("type == null!");
			this.resultType = type;
			if (type == ResultType.VIDEO) {
				this.videoID = o.getString("videoId");
				this.url = "/watch?v=" + this.videoID;
				this.videoTitle = o.get("title").get("runs").asArray().get(0).getString("text");
				this.authorName = o.get("ownerText").get("runs").asArray().getJsonObject(0).getString("text");
				try {
					this.lengthText = o.get("lengthText").getString("simpleText");
				} catch (Exception e) {
					// probably a live video.
					this.lengthText = "0:00";
				}
				try {
					this.viewCount = MathUtil.formatNumber(MathUtil.safeParseL(StringsUtil.onlyNumbers(o.get("viewCountText").getString("simpleText")), -1));
				} catch (Exception e) {
					this.viewCount = "N/A";
				}
				try {
					this.hoverPreviewUrl = o.get("richThumbnail").get("movingThumbnailRenderer").get("movingThumbnailDetails").get("thumbnails").asArray()
							.getJsonObject(0).getString("url");
				} catch (Exception e) {
					this.hoverPreviewUrl = null;
					if (o.hasValue("richThumbnail")
							&& o.get("richThumbnail").get("movingThumbnailRenderer").get("movingThumbnailDetails").hasValue("thumbnails")) {
						log.error("Failed to parse hover url!", e);
						log.error(o.get("richThumbnail").get("movingThumbnailRenderer").toString());
					}
				}
			} else if (this.resultType == ResultType.CHANNEL) {
				this.videoID = o.getString("channelId");
				this.url = "/channel?c=" + this.videoID;
				this.videoTitle = o.get("title").getString("simpleText");
				this.lengthText = "%NTUBE_NOT_VIDEO%";
				this.authorName = this.videoTitle;
				this.hoverPreviewUrl = o.get("thumbnail").get("thumbnails").asArray().get(o.get("thumbnail").get("thumbnails").asArray().size() - 1)
						.getString("url");
				this.viewCount = "N/A";
			} else if (this.resultType == ResultType.PLAYLIST) {
				this.videoID = o.getString("playlistId");
				this.url = o.get("navigationEndpoint").get("commandMetadata").get("webCommandMetadata").getString("url");
				this.videoTitle = o.get("title").getString("simpleText");
				this.authorName = o.get("longBylineText").get("runs").asArray().getJsonObject(0).getString("text");
				this.lengthText = this.authorName + " &centerdot; PLAYLIST &centerdot; " + o.getString("videoCount") + " videos.";
				try {
					this.hoverPreviewUrl = ArrayUtils
							.last(o.get("thumbnailRenderer").get("playlistVideoThumbnailRenderer").get("thumbnail").get("thumbnails").asArray())
							.getString("url");
				} catch (Exception e) {
					log.error("Failed to get hover preview URL!", e);
				}
				this.viewCount = "N/A";
			} else if (this.resultType == ResultType.SHOW) {
				this.authorName = o.get("longBylineText").get("runs").asArray().getJsonObject(0).getString("text");
				this.videoTitle = o.get("title").getString("simpleText");
				this.lengthText = this.authorName + " &centerdot; SHOW &centerdot; " + o.get("thumbnailOverlays").asArray().get(0)
						.get("thumbnailOverlayBottomPanelRenderer").get("text").get("runs").get(0).getString("text") + " episodes.";
				this.videoID = o.get("navigationEndpoint").get("watchEndpoint").getString("videoId");
				String url = "/watch?v=";
				url += this.videoID;
				if (o.get("navigationEndpoint").get("watchEndpoint").hasValue("playlistId"))
					url += "&list=" + o.get("navigationEndpoint").get("watchEndpoint").getString("playlistId");
				this.url = url;
				try {
					this.viewCount = MathUtil.formatNumber(MathUtil.safeParseL(StringsUtil.onlyNumbers(o.get("viewCountText").getString("simpleText")), -1));
				} catch (Exception e) {
					this.viewCount = "N/A";
				}
			} else {
				throw new UnsupportedOperationException("type: " + type);
			}
		}

		public String getURL() {
			return this.url;
		}

		public ResultType getType() {
			return this.resultType;
		}

		public String getVideoID() {
			return this.videoID;
		}

		public String getVideoTitle() {
			return this.videoTitle;
		}

		public String getAuthorName() {
			return this.authorName;
		}

		public String getLengthText() {
			return this.lengthText;
		}

		public String getViewCountString() {
			return this.viewCount;
		}

		public String getHoverPreviewURL() {
			return this.hoverPreviewUrl;
		}

		@Override
		public String toString() {
			return "YouTubeSearch.Result[videoID=" + this.videoID + ",title=" + this.videoTitle + "]";
		}
	}

	public static void main(String[] args) throws Exception {
		searchFor("Carpenter Brut",
				"EvEDEg5DYXJwZW50ZXIgQnJ1dBreA1NCU0NBUXRFV1RGek9WTnRjbEZTUllJQkMyVnlOREUyUVdRelVqRm5nZ0VMZDNrNWNqSnhaVzkxYVZHQ0FRdGZlRzk0VlVWTFlqQnZjNElCQzFKWmRGWm1NSGQyVUhCamdnRUxkREpxVkVKRlpUUjRkVVdDQVF0eFJtWjVZbTVmVnpoQmE0SUJHRlZEVUZadVRISnJka1l6VFY5SU1VNVVUM05OZG1keVFZSUJDMHhXYmtwelRHbExOR2hqZ2dFTFUxWm1OMDVDYm1OVmVUQ0NBUXRNWTBrNGMyWjNlSFpKYzRJQkMwcFlkSFZxZUZRNWNucEJnZ0VpVUV4VU0yTmpURGxIZFRWNWNIZ3lkakkxYVMxa1JXUnlZa3BhV2t4eFRIb3pTWUlCQzBsdWJuZDZla3BoT0dWcmdnRWFVa1JGVFUxSFNsQlhRblZGVkhkSVZIVk5lRGxWY1dsbGEwR0NBU0pRVEZaS05WTmZaMDVZVWpoTk4wMXpjR3RZYzFCdU1UQTFWV1l3Y1ZoNFdWQnBnZ0VMTFZkd09UVnBkR0pwUVVHQ0FRczVPRVJFWjJKMFJTMWxWWUlCQ3pkbVJIWjRiRXN5UmsxamdnRUxWV3N6YmkxRGExRmhiemclM0QYgeDoGCILc2VhcmNoLWZlZWQ%3D");
	}
}
